---
# Copyright 2014, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- name: Setup the utility location(s)
  hosts: utility_all
  user: root
  pre_tasks:
    - include: "common-tasks/os-{{ container_tech | default('lxc') }}-container-setup.yml"

    - include: common-tasks/os-log-dir-setup.yml
      vars:
        log_dirs:
          - src: "/openstack/log/{{ inventory_hostname }}-utility"
            dest: "/var/log/utility"

    - include: common-tasks/unbound-clients.yml
      static: no
      when:
        - hostvars['localhost']['resolvconf_enabled'] | bool

    - name: Create log directory (not is_metal)
      file:
        dest: "/var/log/utility"
        state: "directory"
        force: "yes"
      when: not is_metal | bool

  roles:
    - role: "galera_client"
    - role: "openstack_openrc"
      tags:
        - openrc

  post_tasks:

    - name: Install distro packages
      package:
        name: "{{ utility_distro_packages | default([]) }}"
        state: "{{ utility_package_state }}"
        update_cache: "{{ (ansible_pkg_mgr in ['apt', 'zypper']) | ternary('yes', omit) }}"
        cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}"

    - name: Get list of python clients
      shell: "curl -s {{ repo_release_path }}/requirements_absolute_requirements.txt  | grep client | cut -d'=' -f1"
      args:
        warn: no
      register: client_list
      run_once: true
      changed_when: false
      tags:
        - always
        - skip_ansible_lint

    - name: Install pip packages
      pip:
        name: "{{ client_list.stdout_lines | union(utility_pip_packages) }}"
        state: "{{ utility_pip_package_state }}"
        extra_args: >-
          {{ (pip_install_upper_constraints is defined) | ternary('--constraint ' + pip_install_upper_constraints | default(''),'') }}
          {{ pip_install_options | default('') }}
      register: install_packages
      until: install_packages|success
      retries: 5
      delay: 2

    - name: Distribute private ssh key
      copy:
        content: "{{ utility_ssh_private_key }}"
        dest: /root/.ssh/id_rsa
        mode: 0600
        owner: root
        group: root
      when: utility_ssh_private_key is defined
  environment: "{{ deployment_environment_variables | default({}) }}"
  tags:
    - utility
